package cn.yiya.shiji.business;

import android.content.Context;
import android.os.Handler;
import android.text.TextUtils;
import android.util.Log;

import com.kf5sdk.utils.Utils;
import com.tencent.mm.sdk.openapi.IWXAPI;
import com.tencent.mm.sdk.openapi.WXAPIFactory;

import java.util.HashMap;

import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.Platform.ShareParams;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.onekeyshare.OnekeyShare;
import cn.sharesdk.sina.weibo.SinaWeibo;
import cn.sharesdk.wechat.friends.Wechat;
import cn.sharesdk.wechat.moments.WechatMoments;
import cn.yiya.shiji.config.Configration;

public class ShareTools {
    private Context mContext;
    private static ShareTools instance;
    //public static final int Platform_QQ =0;
    public static final int Platform_WX = 1;
    //public static final int Platform_SMS =2;
    public static final int Platform_WXZone = 3;
    //public static final int Platform_QQZone = 4;
    public static final int Platform_WeiBo = 5;
    public static final String LogoUrl = "http://7xjc5h.com2.z0.glb.qiniucdn.com/512pt_@1x.png";

    private ShareTools() {
    }

    public static ShareTools getInstance() {
        if (instance == null) {
            instance = new ShareTools();
        }
        return instance;
    }

//    public void showShare(Context context, String content) {
//
//        OnekeyShare oks = new OnekeyShare();
//        //关闭sso授权
//        oks.disableSSOWhenAuthorize();
//
//        // 分享时Notification的图标和文字  2.5.9以后的版本不调用此方法
//        //oks.setNotification(R.drawable.ic_launcher, getString(R.string.app_name));
//        // title标题，印象笔记、邮箱、信息、微信、人人网和QQ空间使用
//        oks.setTitle("您的朋友邀请您加入全能妈咪");
//        // titleUrl是标题的网络链接，仅在人人网和QQ空间使用
//        oks.setTitleUrl("http://www.quannengmami.com");
//        // text是分享文本，所有平台都需要这个字段
//        oks.setText(content);
//        // imagePath是图片的本地路径，Linked-In以外的平台都支持此参数
//        oks.setImageUrl(LogoUrl);
//        // url仅在微信（包括好友和朋友圈）中使用
//        oks.setUrl("http://www.quannengmami.com");
//        // comment是我对这条分享的评论，仅在人人网和QQ空间使用
//        //oks.setComment("我是测试评论文本");
//        // site是分享此内容的网站名称，仅在QQ空间使用
//        //oks.setSite("全能妈咪");
//        // siteUrl是分享此内容的网站地址，仅在QQ空间使用
//        //oks.setSiteUrl("http://sharesdk.cn");
//
//        //启动分享GUI
//        oks.show(context);
//    }

    /**
     * 初始化分享
     *
     * @param context
     */
    public void initShare(Context context) {
        ShareSDK.initSDK(context);
        this.mContext = context;
    }

    public void share(int type, String sharemsg) {
        ShareParams sp = new ShareParams();
        sp.setShareType(Platform.SHARE_TEXT);

        sp.setText(sharemsg);
        //sp.setImagePath("/mnt/sdcard/测试分享的图片.jpg");
        String platformName = "";
        switch (type) {
            //case Platform_QQ:
            //	platformName = QQ.NAME;
            //	break;
            //case Platform_SMS:
            //	platformName = ShortMessage.NAME;
            //	break;
            case Platform_WX:
                //sp.setTitle("全能妈咪");
                sp.setImageUrl(LogoUrl);
                sp.setTitleUrl("http://www.quannengmami.com");
                sp.setUrl("http://www.quannengmami.com");
                platformName = Wechat.NAME;
                break;
            default:
                return;
        }
        Platform platform = ShareSDK.getPlatform(platformName);
        platform.setPlatformActionListener(new PlatformActionListener() {
            @Override
            public void onError(Platform arg0, int arg1, Throwable arg2) {
                Log.e("error", arg2.toString());
            }

            @Override
            public void onComplete(Platform arg0, int arg1, HashMap<String, Object> arg2) {
                Log.e("complete", "分享结束");
            }

            @Override
            public void onCancel(Platform arg0, int arg1) {
            }
        }); // 设置分享事件回调
        // 执行图文分享
        platform.share(sp);
    }


    public void share(int type, String title, final String imageUrl, String url, final String content) {
        IWXAPI api = WXAPIFactory.createWXAPI(mContext, Configration.WX_APPID, false);
        if (!api.isWXAppInstalled()) {
            Utils.showMessageToast(mContext, "请先安装微信客户端");
            return;
        }
        final ShareParams sp = new ShareParams();
        sp.setShareType(Platform.SHARE_WEBPAGE);
        sp.setTitle(title);
        sp.setText(content);
        sp.setUrl(url);
        if(!TextUtils.isEmpty(imageUrl)) {
            sp.setImageUrl(imageUrl);
        }else {
            sp.setImageUrl("");
        }

        String platformName = "";
        switch (type) {
            case Platform_WX:
                platformName = Wechat.NAME;
                break;
            case Platform_WXZone:
                platformName = WechatMoments.NAME;
                break;
            default:
                return;
        }
        Platform platform = ShareSDK.getPlatform(platformName);
        platform.setPlatformActionListener(new PlatformActionListener() {
            @Override
            public void onError(Platform arg0, int arg1, Throwable arg2) {
                mHandler.sendEmptyMessage(2);
            }

            @Override
            public void onComplete(Platform arg0, int arg1, HashMap<String, Object> arg2) {
//				DebugUtil.e("分享成功");
                mHandler.sendEmptyMessage(1);
            }

            @Override
            public void onCancel(Platform arg0, int arg1) {
                mHandler.sendEmptyMessage(3);
            }
        }); // 设置分享事件回调// 设置分享事件回调
        // 执行图文分享
        platform.share(sp);
    }

    // Handler 可以接受或者发送消息,从消息队列中提取消息,用户更新UI的操作
    private Handler mHandler = new Handler() {
        @Override
        public void handleMessage(android.os.Message msg) {
            switch (msg.what) {
                case 1:
                    Utils.showMessageToast(mContext, "分享成功");
                    break;
                case 2:
                    Utils.showMessageToast(mContext, "分享失败");
                    break;
                case 3:
                    Utils.showMessageToast(mContext, "分享取消");
                    break;
                default:
                    break;
            }
        }
    };

    public void share(int type, String sharemsg, String imagepath) {
        if (TextUtils.isEmpty(sharemsg)) {
            sharemsg = "嘿嘿 又来秀图了";
        }
        ShareParams sp = new ShareParams();
        sp.setShareType(Platform.SHARE_IMAGE);

        sp.setText(sharemsg);
        sp.setImagePath(imagepath);
        String platformName = "";
        switch (type) {
            //case Platform_QQZone:
            //	platformName = QZone.NAME;
            //	sp.setTitle(sharemsg);
            //sp.setTitleUrl("http://www.quannengmami.com"); // 标题的超链接
            //sp.setText("测试分享的文本");
            //sp.setImageUrl("http://www.someserver.com/测试图片网络地址.jpg");
            //	sp.setSite("全能妈咪");
            //	sp.setSiteUrl("http://www.quannengmami.com");
            //	break;
            case Platform_WeiBo:
                platformName = SinaWeibo.NAME;
                break;
            case Platform_WXZone:
                //sp.setTitle("全能妈咪");
                sp.setImageUrl(LogoUrl);
                sp.setTitleUrl("http://www.quannengmami.com");
                sp.setUrl("http://www.quannengmami.com");
                platformName = WechatMoments.NAME;
                break;
            default:
                return;
        }
        Platform platform = ShareSDK.getPlatform(platformName);
        platform.setPlatformActionListener(new PlatformActionListener() {
            @Override
            public void onError(Platform arg0, int arg1, Throwable arg2) {
            }

            @Override
            public void onComplete(Platform arg0, int arg1, HashMap<String, Object> arg2) {
            }

            @Override
            public void onCancel(Platform arg0, int arg1) {
            }
        }); // 设置分享事件回调
        // 执行图文分享
        platform.share(sp);
    }

    public void showShare(Context context, String title, String imageUrl, String url, String content) {
        showShare(context, title, imageUrl, url, content, true);
    }

    public void showShare(Context context, String title, String imageUrl, String url, String content, boolean bSina) {
        bSina = false;
        OnekeyShare oks = new OnekeyShare();
        //关闭sso授权
        oks.disableSSOWhenAuthorize();

        // 分享时Notification的图标和文字  2.5.9以后的版本不调用此方法
        //oks.setNotification(R.drawable.ic_launcher, getString(R.string.app_name));
        // title标题，印象笔记、邮箱、信息、微信、人人网和QQ空间使用
        // oks.setTitle("全能妈咪");
        oks.setTitle(title);
        // titleUrl是标题的网络链接，仅在人人网和QQ空间使用
        //"http://www.quannengmami.com"
        oks.setTitleUrl(url);
        // text是分享文本，所有平台都需要这个字段
        oks.setText(content);
        // imagePath是图片的本地路径，Linked-In以外的平台都支持此参数
        oks.setImageUrl(imageUrl);
        // url仅在微信（包括好友和朋友圈）中使用
        oks.setUrl(url);
        // comment是我对这条分享的评论，仅在人人网和QQ空间使用
        //oks.setComment("我是测试评论文本");
        // site是分享此内容的网站名称，仅在QQ空间使用
        //oks.setSite("全能妈咪");
        // siteUrl是分享此内容的网站地址，仅在QQ空间使用
        oks.setSiteUrl(url);

        if (!bSina) {
            oks.addHiddenPlatform(SinaWeibo.NAME);
        }

        //启动分享GUI
        oks.show(context);
    }
}
